/*****************************************************************************
	SNEGA UTILITIES 0.7a
	Copyright (C) 2009, Xiaohan Tian (snega0223)
	
	http://code.google.com/p/snega-utilities/
	
	This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License(LGPL) as
	published by the Free Software Foundation, either version 3 of the 
	License, or(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU Lesser General Public License for more details.
	
	You should have received a copy of the GNU Lesser General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.
*****************************************************************************/

package org.sng.util.db.rawsql.value;

public class Value {
	
	protected String m_header;
	protected String m_value;
	
	protected Value m_next;
	
	public Value(String header, String value)
	{
		this.m_header = header;
		this.m_value = value;
		
		this.m_next = null;
	}
	
	public void AppendValue(Value o)
	{
		if (this.m_next == null)
		{
			this.m_next = o;
		}
		else
		{
			this.m_next.AppendValue(o);
		}
	}
	
	public String GetHeaderString()
	{
		return this.m_header;
	}
	
	public String GetValueString()
	{
		return this.m_value;
	}
	
	public String AllToInsertString()
	{
		StringBuffer sb1 = new StringBuffer();
		StringBuffer sb2 = new StringBuffer();
		
		sb1.append("(");
		sb2.append("(");
		
		sb1.append(this.GetHeaderString());
		sb2.append(this.GetValueString());
		
		Value o = this.m_next;
		
		while (o != null)
		{
			sb1.append(", ");
			sb2.append(", ");
			
			sb1.append(o.GetHeaderString());
			sb2.append(o.GetValueString());
			
			o = o.m_next;
		}
		
		sb1.append(")");
		sb2.append(")");
		
		sb1.append(" values ");
		sb1.append(sb2);
		
		return sb1.toString();
	}
	
	public String AllToUpdateString()
	{
		StringBuffer sb = new StringBuffer();
		
		sb.append(this.GetHeaderString());
		sb.append("=");
		sb.append(this.GetValueString());
		
		Value o = this.m_next;
		
		while (o != null)
		{
			sb.append(", ");
			
			sb.append(o.GetHeaderString());
			sb.append("=");
			sb.append(o.GetValueString());
			
			o = o.m_next;
		}
		
		return sb.toString();
	}

}
